#include "../include/head.h"
int query(char *username, char *salt, char *pwd)
{
    //判断传入的用户名是否存在，如果不存在返回0
    //如果存在，获取数据库中的加密后的密码，然后返回加密后的密码
    //成功返回1，失败返回-1

	MYSQL *conn;
	MYSQL_RES *res;
	MYSQL_ROW row;
	char *server = "localhost";
	char *user = "chen";
	char *password = "123";
	char *database = "37chen";//要访问的数据库名称
	char query[300] = "select id,salt,cryptpasswd from user where username='";
    int userID = 0;
	unsigned int queryRet;
    //将搜索语句拼接起来
	sprintf(query, "%s%s%s", query, username, "'");

    //在输出前先打印查询语句
	/* puts(query); */

    //初始化
	conn = mysql_init(NULL);
    if(!conn)
    {
        printf("MySQL init failed\n");
        return -1;
    }

    //连接数据库，看连接是否成功，只有成功才能进行后面的操作
	if(!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0))
	{
		printf("Error connecting to database: %s\n", mysql_error(conn));
		return -1;
	}
    else
    {
		printf("MySQL Connected...\n");
	}

    //把SQL语句传递给MySQL
	queryRet = mysql_query(conn, query);
	if(queryRet)
	{
		printf("Error making query: %s\n", mysql_error(conn));
	}
    else
    {
    
        //用mysql_num_rows可以得到查询的结果集有几行
        //要配合mysql_store_result使用
        //第一种判断方式
        res = mysql_store_result(conn);
        /* printf("mysql_num_rows = %lu\n", (unsigned long)mysql_num_rows(res)); */

        //第二种判断方式,两种方式不能一起使用
		/* res = mysql_use_result(conn); */
            
        row = mysql_fetch_row(res);
		if(NULL == row)
        {
            //如果传入的用户名不在user表中，返回0
            printf("Don't find any data\n");
            return userID;
        }
        else
		{
            //获取数据库中的密码
            userID = atoi(row[queryRet]);
            ++queryRet;
            memcpy(salt, row[queryRet], strlen(row[queryRet]));
            ++queryRet;
            memcpy(pwd, row[queryRet], strlen(row[queryRet]));
            return userID;
        }
		mysql_free_result(res);
	}

	mysql_close(conn);

	return 0;
}